package YZ.Students.Mier.Listener; /**
 * @className: ${NAME}
 * @author: shuishui
 * @date: 2022/12/02 17:48
 */

import org.thymeleaf.TemplateEngine;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

// 项目启动的时候给上下文域对象中放到了模板引擎对象
@WebListener
public class ThymeleafListener implements ServletContextListener {

    private static final String TEMPLATE_ENGINE_INST = "com.ts.thymeleaf.TemplateEngine";

    // 从上下文的域对象中获取模板引擎对象
    public static TemplateEngine getTemplateEngine(ServletContext context) {
        return (TemplateEngine) context.getAttribute(TEMPLATE_ENGINE_INST);
    }

    public void contextInitialized(ServletContextEvent sce) {
        // 1、获取上下文域对象
        ServletContext servletContext = sce.getServletContext();

        // 2.创建一个模板解析对象，用来设置解析模板的属性
        ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext);
        templateResolver.setTemplateMode(TemplateMode.HTML); // 设置HTML模式
        templateResolver.setPrefix("/WEB-INF/templates/"); // 视图模板的前缀
        templateResolver.setSuffix(".html"); // 视图模板后缀
//        templateResolver.setCacheTTLMs(Long.valueOf(3600000L)); // 设置缓存的时间
        templateResolver.setCacheable(false); // 是否开启缓存
        templateResolver.setCharacterEncoding("utf8"); // 设置编码

        // 3.创建一个模板引擎对象,用来做视图的解析
        TemplateEngine engine = new TemplateEngine();
        engine.setTemplateResolver(templateResolver);

        // 4、把模板引擎对象放到上下文的域对象中，方便获取
        servletContext.setAttribute(TEMPLATE_ENGINE_INST, engine);
    }

    public void contextDestroyed(ServletContextEvent sce) {
    }
}
